import java.util.Scanner;
import java.util.Random;

//作业和练习

public class Main{
    //给定两个数，求这两个数的最大公约数--此处是碾转相除法
    //例如：
    //输入：20 40
    //输出：20
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a=in.nextInt();
        int b=in.nextInt();
        int c=a%b;
        while(c!=0)
        {
            a=b;
            b=c;
            c=a%b;
        }
        System.out.println(b);
    }

    //获取一个数二进制序列中所有的偶数位和奇数位， 分别输出二进制序列
    public static void main14(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int i=0;
        for (i = 30; i >= 0 ; i -= 2) {
            System.out.print(((n >> i)&1)+ " ");
        }
        System.out.println();
        for (i = 31; i >= 0 ; i -= 2) {
            System.out.print(((n >> i)&1)+ " ");
        }
    }

    //编写代码模拟三次密码输入的场景。 最多能输入三次密码，密码正确，提示“登录成功”,密码错误，
    // 可以重新输 入，最多输入三次。三次均错，则提示退出程序
    public static void main13(String[] args) {
        Scanner in = new Scanner(System.in);
        int count = 3;
        while (count != 0) {
            System.out.println("请输入你的密码：你还有 "+ count+" 次机会！");
            String pass = in.nextLine();
            if(pass.equals("123456")) {  //判断字符串是否相等
                System.out.println("登录成功！");
                break;
            }else {
                count--;
                System.out.println("密码错误！");
            }
        }
    }

    //输出一个整数的每一位，如：123的每一位是3，2，1
    public static void main12(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        while(n!=0)
        {
            System.out.println(n%10);
            n=n/10;
        }
    }

    //针对每行输入，输出用“*”组成的X形图案。
    public static void main11(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int i=0;
            int n=in.nextInt();
            for(i=0;i<n;i++)
            {
                int j=0;
                for(j=0;j<n;j++)
                {
                    if(i+j==n-1||i==j)
                    {
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }

    //完成猜数字游戏   ，用户输入数字，判断该数字是大于，小于，还是等于随机生成的数字，等于的时候退出程序。
    public static void main10(String[] args) {
        Scanner scan=new Scanner (System.in);
        Random random = new Random();
        int randNum = random.nextInt(101);//[0,101)
        //50-100的随机数   random.nextInt(50)--[0,50)  + 50;
        while(true)
        {
            System.out.println("请输入猜的数字: ");
            int num=scan.nextInt();
            if(num>randNum)
            {
                System.out.println("猜大了");
            }
            else if(num==randNum)
            {
                System.out.println("猜对了");
                break;
            }
            else{
                System.out.println("猜小了");
            }
        }
    }

    //计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
    public static void main9(String[] args) {
        int i=1;
        int flg=1;
        double sum=0;
        for(i=1;i<=100;i++)
        {
            sum+=1.0/i*flg;
            flg=-flg;
        }
        System.out.println(sum);
    }

    //编写程序数一下 1到 100 的所有整数中出现多少个数字9
    public static void main8(String[] args) {
        int i=1;
        int count=0;
        for(i=1;i<=100;i++)
        {
            if(i%10==9)
            {
                count++;
            }
            if(i/10==9)
            {
                count++;
            }
        }
        System.out.println(count);
    }
        public static void main7(String[] args) {
            int n = -1;
            int count = 0;
            while (n != 0) {
                n = n & (n - 1);
                count++;
            }
            System.out.println(count);
        }

        public static void main3(String[] args) {
            for (int i = 1; i <= 999999; i++) {
                //i == 123
                int count = 0;//记录位数
                int tmp = i;
                while (tmp != 0) {
                    tmp /= 10;
                    count++;
                }
                tmp = i;//123
                int sum = 0;
                while (tmp != 0) {
                    sum += Math.pow(tmp % 10, count);
                    tmp /= 10;
                }
                if (sum == i) {
                    System.out.println(i);
                }
            }
        }

        public static void main2(String[] args) {
            for (int n = 1; n <= 100; n++) {
                //int n = 9;
                int i = 2;
                for (; i <= Math.sqrt(n); i++) {
                    if (n % i == 0) {
                        break;
                    }
                }
                //有几种情况 ？ 2--》  1、 不符合循环条件 2、因为遇到了 break
                if (i > Math.sqrt(n)) {
                    System.out.println(n + " 是素数！ ");
                }
            }

        }
}
